package com.fhz.loginmvvm.repository

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.fhz.loginmvvm.Data
import com.fhz.loginmvvm.User
import com.fhz.loginmvvm.api.ServiceApi
import com.fhz.loginmvvm.callback.ApiResponse
import com.fhz.loginmvvm.callback.ApiSuccessResponse
import com.fhz.loginmvvm.datasource.MainLocalDataSource
import com.fhz.loginmvvm.datasource.MainRemoteDataSource
import com.fhz.loginmvvm.util.RetrofitManager
import retrofit2.create

/**
 * 时间:2023/3/24
 * @author Mr.Feng
 * 简述: 仓库的作业是提供数据
 * 而数据的来源,对使用这来说是透明度.
 * 这里有两个来源
 * 1,remonte -> Retrofit
 * 2,local -> Room
 */
class MainRepository(
    private val mainRemoteDataSource: MainRemoteDataSource,
    private val mainLocalDataSource: MainLocalDataSource
    ){

    //老方法
    @Deprecated("丢弃", ReplaceWith("login4Local"))
    fun login(name:String,pwd:String) : LiveData<ApiResponse<User>>{
        //如果是第一次登录,那么就去网上请求.
        //如果是已经登登录成功,可以从本地取.
        return RetrofitManager.create().create(ServiceApi::class.java).login(name,pwd)
    }

    fun login4Local(uid:Int) : LiveData<Data>{
        //如果是第一次登录,那么就去网上请求.
        //如果是已经登登录成功,可以从本地取.
        //这里可以用我们说的taken来做条件判断.
//        var token = true
//        if(token){
            return mainLocalDataSource.findUserById(uid)
//        }else{
//            val login = RetrofitManager.create().create(ServiceApi::class.java).login(name, pwd)
//            return login.value.let {
//                val apiSuccessResponse = it as ApiSuccessResponse
//                val data = apiSuccessResponse.body.data
//                MutableLiveData(data)
//            }
//        }
    }
}